Microprocessors often include circular buffers, which are a type of memory queue that may be used to store, e.g., memory accesses or instructions. The function of finding the first element of a certain type in the circular buffer may currently be implemented through ripple logic. Ripple logic starts at the first entry in the circular queue and determines if the entry is the desired element. If the entry is not the desired element, the circuitry sends a signal down to the next entry in the circular queue to indicate that the element has not been found. Circuitry associated with the next entry would then check that entry for the element. The process is repeated through each of the entries until the circuitry finds the desired value.
In current ripple designs, the gate delay through the circuit is directly proportional to the queue modulo (i.e., the size of the queue). Thus, a 64-entry queue would require twice the gate delay as a 32-entry queue. Such linearly increasing gate delay may be a disadvantage for processors with larger queues.